#pragma once

#include "WorldObject.h"
#include "IAnimated.h"
#include "IMovable.h"

class Human;
class World;

enum EBalloonColor
  {
  BC_BLUE = 0,
  BC_YELLOW
  };

class Balloon : public WorldObject, public IAnimated, public IMovable
  {
  public:
    HSMODEL_API Balloon(World& i_world, EBalloonColor i_balloon_color, TVector3 i_shift, const Human* ip_human = nullptr, size_t i_number_of_frames = 2);
    HSMODEL_API virtual double GetAngleAroundY() const override;
    HSMODEL_API virtual void NextFrame() override;
    HSMODEL_API virtual void Move() override;
    HSMODEL_API virtual std::string GetName() const override;
    HSMODEL_API virtual std::string GetType() const override;
    HSMODEL_API virtual TVector3 GetPosition() const override;
    HSMODEL_API EBalloonColor GetColor() const;
    HSMODEL_API ~Balloon();
  private:
    TVector3 m_shift;
    std::string m_str_color;
    EBalloonColor m_color;
    size_t m_state;
    size_t m_number_of_frames;
    const Human* mp_human;
    World& m_world;
  };